/**
 * \file Outils.h
 * \author Catalin BLAJ
 * \author Vincent JACQUEMIN
 * \date 17 Octobre 2013
 *
 * Fichier header SCase.h pour le programme du Sudoku.
 */

#ifndef OUTILS_H
#define OUTILS_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

/**
 * \brief Fonction de logarithme à base 2.
 * \param n : Nombre dont on veut connaitre le logarithme.
 * \return log à base 2 de n.
 *
 * Cette fonction calcule le logarithme à base 2 d'un nombre.
 */
unsigned logBase2(unsigned long long n);

/**
 * \brief Fonction d'exponentielle à base 2.
 * \param exp : Exposant (donnée).
 * \return 2^(exp).
 *
 * Cette fonction calcule l'exponentielle à base 2 d'un nombre.
 */
unsigned long long pow2(unsigned exp);

/**
 * \brief Fonction d'exctraction de sous-chaine.
 * \param chaine : Chaine de départ (donnée).
 * \param debut : Indice de début (donnée).
 * \param fin : Indice de fin (donnée).
 * \return Renvoie la sous-chaine extraite.
 *
 * Cette fonction permet d'extraire une sous-chaine d'une chaine de caractère.
 */
char* extraireSousChaine (const char* chaine, unsigned int debut, unsigned int fin);

/**
 * \brief Ajouter un caractère à la fin d'une chaine.
 * \param chaine : La chaine principale (donnée-résultat).
 * \param caractere : Le caractère à ajouter (donnée).
 *
 * Cette fonction ajoute un caractère à la fin d'une chaine.
 */
void ajouterCaractere(char* chaine, char caractere);

#endif


